//package org.convallaria.system.biz.controller.other;
//
//import lombok.RequiredArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.convallaria.system.biz.service.CacheValidationService;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.HashMap;
//import java.util.Map;
//import java.util.concurrent.CompletableFuture;
//
///**
// * 缓存验证控制器
// * 提供缓存功能验证的REST API
// *
// * @author gjh
// * @since 2024-09-24
// */
//@Slf4j
//@RestController
//@RequestMapping("/api/cache/validation")
//@RequiredArgsConstructor
//public class CacheValidationController {
//
//    private final CacheValidationService cacheValidationService;
//
//    /**
//     * 基本缓存功能验证
//     */
//    @GetMapping("/user/{id}")
//    public Map<String, Object> getUserById(@PathVariable Long id) {
//        log.info("验证基本缓存功能，用户ID: {}", id);
//
//        long startTime = System.currentTimeMillis();
//        CacheValidationService.UserInfo user = cacheValidationService.getUserById(id);
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("user", user);
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 条件缓存验证
//     */
//    @GetMapping("/user/{id}/conditional")
//    public Map<String, Object> getUserByIdWithCondition(@PathVariable Long id) {
//        log.info("验证条件缓存功能，用户ID: {}", id);
//
//        long startTime = System.currentTimeMillis();
//        CacheValidationService.UserInfo user = cacheValidationService.getUserByIdWithCondition(id);
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("user", user);
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * CacheUtils验证
//     */
//    @GetMapping("/user/{id}/utils")
//    public Map<String, Object> getUserWithUtils(@PathVariable Long id) {
//        log.info("验证CacheUtils功能，用户ID: {}", id);
//
//        long startTime = System.currentTimeMillis();
//        CacheValidationService.UserInfo user = cacheValidationService.getUserWithUtils(id);
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("user", user);
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 异步缓存验证
//     */
//    @GetMapping("/user/{id}/async")
//    public CompletableFuture<Map<String, Object>> getUserAsync(@PathVariable Long id) {
//        log.info("验证异步缓存功能，用户ID: {}", id);
//
//        return cacheValidationService.getUserAsync(id)
//                .thenApply(user -> {
//                    Map<String, Object> result = new HashMap<>();
//                    result.put("user", user);
//                    result.put("timestamp", System.currentTimeMillis());
//                    result.put("async", true);
//                    return result;
//                });
//    }
//
//    /**
//     * Redis缓存工具验证
//     */
//    @GetMapping("/redis/{id}")
//    public Map<String, Object> testRedisCacheUtils(@PathVariable Long id) {
//        log.info("验证Redis缓存工具，用户ID: {}", id);
//
//        long startTime = System.currentTimeMillis();
//        cacheValidationService.testRedisCacheUtils(id);
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("message", "Redis缓存工具验证完成");
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 缓存性能测试
//     */
//    @PostMapping("/performance")
//    public Map<String, Object> performanceTest(@RequestParam(defaultValue = "100") int iterations) {
//        log.info("开始缓存性能测试，迭代次数: {}", iterations);
//
//        long startTime = System.currentTimeMillis();
//        cacheValidationService.performanceTest(iterations);
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("iterations", iterations);
//        result.put("totalExecutionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 缓存统计信息
//     */
//    @GetMapping("/statistics")
//    public Map<String, Object> getCacheStatistics() {
//        log.info("获取缓存统计信息");
//
//        CacheValidationService.CacheStatistics stats = cacheValidationService.getCacheStatistics();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("statistics", stats);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 重置统计信息
//     */
//    @PostMapping("/statistics/reset")
//    public Map<String, Object> resetStatistics() {
//        log.info("重置缓存统计信息");
//
//        cacheValidationService.resetStatistics();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("message", "缓存统计信息已重置");
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 缓存刷新验证
//     */
//    @PostMapping("/refresh")
//    public Map<String, Object> refreshCache() {
//        log.info("验证缓存刷新功能");
//
//        long startTime = System.currentTimeMillis();
//        cacheValidationService.refreshUserCache();
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("message", "缓存刷新已触发");
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 缓存预热验证
//     */
//    @PostMapping("/warmup")
//    public Map<String, Object> warmupCache() {
//        log.info("验证缓存预热功能");
//
//        long startTime = System.currentTimeMillis();
//        cacheValidationService.warmupUserCache();
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("message", "缓存预热已触发");
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 批量清除缓存验证
//     */
//    @PostMapping("/clear")
//    public Map<String, Object> clearCache() {
//        log.info("验证批量清除缓存功能");
//
//        long startTime = System.currentTimeMillis();
//        cacheValidationService.clearAllUserCache();
//        long endTime = System.currentTimeMillis();
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("message", "缓存清除已触发");
//        result.put("executionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//
//    /**
//     * 缓存健康检查
//     */
//    @GetMapping("/health")
//    public Map<String, Object> healthCheck() {
//        log.info("执行缓存健康检查");
//
//        Map<String, Object> result = new HashMap<>();
//        result.put("status", "UP");
//        result.put("message", "缓存服务运行正常");
//        result.put("timestamp", System.currentTimeMillis());
//
//        // 执行一个简单的缓存操作来验证功能
//        try {
//            cacheValidationService.getUserById(1L);
//            result.put("cacheTest", "PASS");
//        } catch (Exception e) {
//            result.put("cacheTest", "FAIL");
//            result.put("error", e.getMessage());
//        }
//
//        return result;
//    }
//
//    /**
//     * 综合验证测试
//     */
//    @PostMapping("/comprehensive")
//    public Map<String, Object> comprehensiveTest() {
//        log.info("执行综合缓存验证测试");
//
//        Map<String, Object> result = new HashMap<>();
//        long startTime = System.currentTimeMillis();
//
//        try {
//            // 1. 基本缓存测试
//            result.put("basicCache", cacheValidationService.getUserById(1L));
//
//            // 2. 条件缓存测试
//            result.put("conditionalCache", cacheValidationService.getUserByIdWithCondition(2L));
//
//            // 3. CacheUtils测试
//            result.put("cacheUtils", cacheValidationService.getUserWithUtils(3L));
//
//            // 4. Redis工具测试
//            cacheValidationService.testRedisCacheUtils(4L);
//            result.put("redisUtils", "PASS");
//
//            // 5. 性能测试
//            cacheValidationService.performanceTest(10);
//            result.put("performanceTest", "PASS");
//
//            // 6. 统计信息
//            result.put("statistics", cacheValidationService.getCacheStatistics());
//
//            result.put("status", "SUCCESS");
//            result.put("message", "综合验证测试完成");
//
//        } catch (Exception e) {
//            result.put("status", "FAILED");
//            result.put("message", "综合验证测试失败");
//            result.put("error", e.getMessage());
//        }
//
//        long endTime = System.currentTimeMillis();
//        result.put("totalExecutionTime", endTime - startTime);
//        result.put("timestamp", System.currentTimeMillis());
//
//        return result;
//    }
//}
